Skip to content

fix: prevent SQL/SOQL injection in Snowflake and Salesforce templates - #764

Merged
kojiwakayama merged 1 commit into
mainfrom
fix/sql-injection-snowflake-salesforce
Mar 27, 2026
Merged

fix: prevent SQL/SOQL injection in Snowflake and Salesforce templates#764
kojiwakayama merged 1 commit into
mainfrom
fix/sql-injection-snowflake-salesforce

Conversation

@kojiwakayama

Copy link
Copy Markdown
Contributor

Summary

  • Snowflake template: Add identifier validation (/^[A-Za-z_][A-Za-z0-9_]*$/) for database, schema, and table parameters interpolated into SQL in listSchemas, listTables, describeTable, and getTableRowCount
  • Salesforce template: Add Salesforce ID format validation, SOQL string escaping for free-text values, and field name validation to prevent injection via getSingleRecord, listContacts, listOpportunities, and listLeads

Both APIs don't support parameterized identifiers, so allowlist validation is the standard mitigation.

Found via Aikido SAST scan — these are the real critical findings from a batch of 319 issues (96% false positive rate).

Test plan

  • Verify Snowflake template scaffolds correctly with veryfront generate integration snowflake
  • Verify Salesforce template scaffolds correctly with veryfront generate integration salesforce
  • Confirm validation rejects malicious identifiers (e.g., foo; DROP TABLE)
  • Confirm validation accepts normal identifiers (e.g., my_database, PUBLIC)

Snowflake: Add identifier validation for database, schema, and table
parameters that are interpolated into SQL statements. Rejects values
that don't match Snowflake's unquoted identifier rules.

Salesforce: Add Salesforce ID format validation (15/18 char alphanumeric)
for record ID and accountId parameters. Add SOQL escaping for free-text
string values like lead status. Add field name validation to prevent
injection via crafted field arrays.

Both templates construct queries via string interpolation where
parameterized queries are not supported by the respective APIs.
Allowlist validation is the standard mitigation.
@kojiwakayama
kojiwakayama merged commit e79da22 into main Mar 27, 2026
14 checks passed
@kojiwakayama
kojiwakayama deleted the fix/sql-injection-snowflake-salesforce branch March 27, 2026 10:26
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant